1. Field of the Invention
This invention relates to the field of single wire bus communication systems, and particularly to methods of handling simultaneous responses from multiple clients.
2. Description of the Related Art
Single wire bus communication systems which convey digital data between host and client devices connected to the bus wire are well-known. For example, the system described in U.S. Pat. No. 6,532,506 to Dunstan and Stolizka, and the “1-Wire® bus” are single wire systems found in computer and communication systems. Also common are two wire system management busses utilizing two wires where the data signal is synchronized by a clock signal. For example, the SMBus and the I2C bus systems are two-wire busses found in computer systems.
Such busses typically comprise at least one host device and a number of client devices, all connected to a common bus wire. At the system's physical layer, each host and client device has a pull-up device and a pull-down device connected to the bus wire. The host or client establishes a “high” or “low” logic level on the bus by enabling its pull-up or pull-down device, respectively. The pull-up and pull-down devices can be implemented with passive devices such as resistors, or with active devices such as transistors.
In some situations, several client devices may try to convey data onto the bus at the same time. For example, some or all of the client devices might be dynamically addressable, with addresses assigned as the bus system is powered up. To do this, a host device might issue a command that calls for each client device to respond with a unique identification bit sequence. This can result in some devices trying to pull the bus wire up, and other devices trying to pull it down. To ensure that the bus wire is pulled either “high” or “low” (instead of an indeterminate voltage somewhere between the high and low thresholds), the relative strengths of the pull-up and pull-down devices are generally made unequal. In this way, bus contention is resolved in favor of stronger devices which overcome the weak devices so that the bus wire conveys a logic “high” or “low” depending on whether a particular system chooses the pull-up or pull-down to be the stronger device.
However, this approach imposes an upper limit on the ratio of pull-ups to pull-downs, and thus on the number of client devices that may respond to a command that requires a response from multiple clients. For example, assume that the system uses strong pull-up devices and weak pull-down devices. To avoid an indeterminate voltage on the bus and to maintain a required noise margin, the number of pull-down devices must be limited with respect to the number of pull-up devices. Since the bus design choice requires that a strong pull-up device win the contention between strong “high” and weak “low” signals, the number of pull-down devices must be less than that which could create a pull-down stronger than a pull-up.